//for循环遍历普通的数组，for...in循环 适合遍历键值对，foreach 适合遍历数组对象，新出来的for...of循环可以作为遍历所有数据结构的统一方式

const arr = [100,200,300,400]

for(const item of arr){
    console.log(item) //100 200 300 400
}

arr.forEach(item =>{
    console.log(item) //100 200 300 400
})

for(const item of arr){// for of 可以用break关键词随时终结循环
    console.log(item)
    if(item > 100){
        break
    }
}

arr.forEach() //forEach无法终止遍历
arr.some() //返回true终止遍历
arr.every()// 返回false终止遍历

//伪数组对象也可用for..of遍历，例如arguments对象、dom操作时元素节点的列表

const s = new Set(['foo','bar'])

for(const item of s){// 可用for of循环set
    console.log(item) //foo bar
}

const m = new Map()
m.set('foo','123')
m.set('bar','456')
for(const item of m){
    console.log(item)// ['foo','123]  ['bar','456'] 键和值放在数组中
}

for(const [key,value] of m){
    console.log(key,value)// foo 123  bar 456
}
const obj = {foo:123,bar:456}

for(const item of obj){// obj不可被迭代
    console.log(item)// obj is not iterable
}

